/**
 * 
 */
package backend;

import java.awt.Desktop;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Scanner;

import javax.swing.JOptionPane;

import main.Ausruestungsstart;

/**
 * @author Christian
 * 
 */
public class VersionsChecker implements Runnable {
	
	private String serverUrl = "http://www.chrku.de/heldenplugins/";
	
	private boolean startFromMenu = true;
	
	private VersionsChecker(boolean startFromMenu) {

		this.startFromMenu = startFromMenu;
	}
	
	public static void checkForUpdate(boolean startFromMenu) {

		new Thread(new VersionsChecker(startFromMenu)).start();
	}
	
	public static void main(String[] args) {

		VersionsChecker.checkForUpdate(true);
	}
	
	/**
	 * 
	 * @author Christian
	 * @see java.lang.Runnable#run()
	 */
	@Override
	public void run() {

		String version = Ausruestungsstart.getVersion();
		StringBuilder builder = new StringBuilder();
		builder.append(serverUrl);
		builder.append("download.php?ausruestungsplugin=true");
		//
		URL hilfstextUrl;
		try {
			hilfstextUrl = new URL(builder.toString());
			Scanner scanner = new Scanner(hilfstextUrl.openStream());
			boolean updateFound = false;
			while (scanner.hasNext()) {
				String s = scanner.next();
				if (s.startsWith("version=")) {
					String onlineVersion = s.substring("version=".length(), s.length());
					if (onlineVersion.compareTo(version) > 0) {
						int n = JOptionPane
								.showConfirmDialog(
										null,
										"Es ist eine neue Version "
												+ onlineVersion
												+ " des Ausrüstungsplugins verfügbar. \n Soll der Browser gestartet werden, um dieses Update herunterzuladen?",
										"Neue Version", JOptionPane.YES_NO_OPTION,
										JOptionPane.INFORMATION_MESSAGE);
						if (n == JOptionPane.YES_OPTION) {
							try {
								Desktop.getDesktop().browse(new URI(serverUrl));
							} catch (URISyntaxException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						updateFound = true;
					}
				}
			}
			if (startFromMenu && !updateFound) {
				JOptionPane.showMessageDialog(null,
						"Es wurde kein Update gefunden, das Plugin ist auf dem neusten Stand!",
						"Versionscheck", JOptionPane.INFORMATION_MESSAGE);
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
			if (startFromMenu) {
				JOptionPane.showMessageDialog(null, "Serverfehler!");
			}
		}
	}
}
